package com.study.spring.ch03.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
@RequestMapping(value="/ch03/header/**")  
public class ReqHeaderTestController {

	
	/**
	   *  请求头数据中有指定参数名
	   *  例子1：@RequestMapping(value=“/header/test1”, headers = “Accept”)：
	   *  表示请求的URL必须为“/header/test1”且请求头中必须有Accept参数才能匹配。
	 * @return
	 */
	@RequestMapping(value={"test1"}, headers="Accept")
	public String hello() {
		System.out.println("================headers=Accept");
		return "ch03/hello";
	}
	
	/**
	   *  请求头数据中没有指定参数名
	   *  例子：RequestMapping(value=“/header/test2”, headers = “!abc”)
	   *  表示请求的URL必须为“/header/test2” 且请求头中必须没有abc参数才能匹配。
	 * @return
	 */
	@RequestMapping(value={"test2"}, headers="!abc")
	public String hello01() {
		System.out.println("================headers=!abc");
		return "ch03/hello";
	}
	
	/**
	   *  请求头数据中指定参数名=值
	   *  例子1：@RequestMapping(value="/header/test3", headers = "Content-Type=application/json")
	   *  表示请求的URL必须为“/header/test3” 且请求头中必须有“Content-Type=application/json”参数即可匹配。
	 * @return
	 */
	@RequestMapping(value={"test3"}, headers="Content-Type=application/json")
	public String hello03() {
		System.out.println("================Content-Type=application/json");
		return "ch03/hello";
	}
	
	/**
	   *  请求头数据中指定参数名=值
	   *  例子1：@RequestMapping(value="/header/test4", headers = "Accept=text/*")
	   *  表示请求的URL必须为“/header/test4” 且请求头中必须有“Accept=text/plain”参数即可匹配。
	 * @return
	 */
	@RequestMapping(value={"test4"}, headers="Accept=text/*")
	public String hello04() {
		System.out.println("================Accept=text/plain");
		return "ch03/hello";
	}
	
	/**
	   *  请求头数据中指定参数名=值
	   *  例子1：@RequestMapping(value="/header/test5", headers = "Accept!=text/vnd.wap.wml")
	   *  表示请求的URL必须为“/header/test5” 且请求头中必须有“Accept”参数但值不等于“text/vnd.wap.wml”即可匹配
	 * @return
	 */
	@RequestMapping(value={"test5"}, headers="Accept!=text/vnd.wap.wml")
	public String hello05() {
		System.out.println("================Accept!=text/vnd.wap.wml");
		return "ch03/hello";
	}
	
	/**
	   * 组合使用是“且”的关系
	 * @RequestMapping(value=“/header/test6”, headers = {“Accept!=text/vnd.wap.wml”,“abc=123”})：
	 *  表示请求的URL必须为“/header/test8” 且请求头中必须有“Accept”参数但值不等于“text/vnd.wap.wml”且请求中必须有参数“abc=123”即可匹配。
	 * @return
	 */
	@RequestMapping(value={"test6"}, headers={"Accept!=text/vnd.wap.wml","abc=123"})
	public String hello06() {
		System.out.println("================Accept!=text/vnd.wap.wml");
		return "ch03/hello";
	}
}
